import pandas as pd
import numpy as np
import json
pd.set_option('display.max_rows', None)  # 打印全部行
pd.set_option('display.max_columns', None)  # 打印全部列
pd.set_option('display.width',None)
pd.set_option('display.unicode.east_asian_width',True)

import pandas as pd

def getall():
    data_all = pd.read_excel('海南省2022年-2024年4月旅游数据汇总表.xlsx', sheet_name='海南省2022年-2024年4月旅游数据汇总表')
    json_list = []
    for year in data_all['年份'].unique():
        year_dict = {'year': year, 'data': []}  # 初始化年份字典和列表
        year_data = data_all[data_all['年份'] == year]

        for month in year_data['月份'].unique():  # 注意这里应该从year_data中选择月份
            month_dict = {'month': month, 'data': []}  # 初始化月份字典和列表
            month_data = year_data[year_data['月份'] == month]

            for category_column in data_all.columns[3:]:  # 假设第4列及以后是城市数据列
                category = category_column  # 城市名称就是列名
                if not month_data.empty:  # 确保month_data有数据，防止IndexError
                    info = {'category': category, 'data': month_data.iloc[0][category] if not pd.isnull(
                        month_data.iloc[0][category]) else None}  # 添加非空检查
                    month_dict['data'].append(info)  # 将info添加到月份数据的列表中

            year_dict['data'].append(month_dict)  # 将月份数据添加到年份数据的列表中

        json_list.append(year_dict)  # 将年份数据添加到最终的json_list列表中
    return json_list

def getReceptionOfTourists():
    data_all = pd.read_excel('海南省2022年-2024年4月旅游数据汇总表.xlsx', sheet_name='2022年-2024年分国别（地区）旅游饭店接待外国游客情况表')
    json_list = []
    for year in data_all['年份'].unique():
        year_dict = {'year': year, 'data': []}  # 初始化年份字典和列表
        year_data = data_all[data_all['年份'] == year]

        for month in year_data['月份'].unique():  # 注意这里应该从year_data中选择月份
            month_dict = {'month': month, 'data': []}  # 初始化月份字典和列表
            month_data = year_data[year_data['月份'] == month]

            for nation_column in data_all.columns[3:]:  # 假设第4列及以后是城市数据列
                nation = nation_column  # 城市名称就是列名
                if not month_data.empty:  # 确保month_data有数据，防止IndexError
                    info = {'nation': nation, 'data': str(month_data.iloc[0][nation]) if not pd.isnull(
                        month_data.iloc[0][nation]) else None}  # 添加非空检查
                    month_dict['data'].append(info)  # 将info添加到月份数据的列表中

            year_dict['data'].append(month_dict)  # 将月份数据添加到年份数据的列表中

        json_list.append(year_dict)  # 将年份数据添加到最终的json_list列表中
    return json_list